package com.xiumu.search.utils;

import cn.hutool.core.util.ReflectUtil;
import lombok.Data;

import java.lang.reflect.Method;

/**
 * 实体类转化工具，例如将实体类转换为elasticsearch的索引对象
 */
@Data
public class BeanTransformUtil {

    /**
     * 根据属性名字获取属性的set方法
     * @param fieldName 属性名
     * @return
     */
    public static String getSetMethodNameByFieldName(String fieldName){
        char[] cs=fieldName.toCharArray();
        cs[0]-=32;
        return "set"+String.valueOf(cs);
    }

    /**
     * 给对象的字段赋值
     * @param object  目标对象
     * @param fieldName 字段名
     * @param value 值
     */
    public static void setFieldValue(Object object,String fieldName,Object value){
        Method method = ReflectUtil.getMethodByName(object.getClass(), getSetMethodNameByFieldName(fieldName));
        ReflectUtil.invoke(object,method,value);
    }
}
